package top.someapp.applib;

/**
 * 表示方法调用的结果，一般用来包裹http请求或js调用的返回结果
 *
 * @author zwz
 * Created on 2020-03-30
 */
public interface Result<T> {

    /**
     * 本次调用是否成功
     *
     * @return true: 成功；false：失败
     */
    boolean isSuccess();

    /**
     * 当调用失败时的错误码，如http调用的403，500等
     *
     * @return 错误码
     */
    int getCode();

    /**
     * 设置错误码
     *
     * @param code 错误码
     * @return self(this)
     */
    Result setCode(int code);

    /**
     * 简短的成功或错误的消息
     *
     * @return 消息
     */
    String getMessage();

    /**
     * 设置简短的成功或错误的消息
     *
     * @param message 成功或错误的消息
     * @return self(this)
     */
    Result setMessage(String message);

    /**
     * 获取调用结果中的数据
     *
     * @return 调用结果中的数据
     */
    T getData();

    /**
     * 设置调用结果的数据
     *
     * @param data 要设置的数据
     * @return self(this)
     */
    Result setData(Object data);

    /**
     * 预留的修改success的方法，只能调用一次，调用后success将不能再被修改
     *
     * @param success 是否成功
     * @return self(this)
     */
    Result end(boolean success);
}
